#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
配置管理模块
负责加载和保存配置文件
"""

import os
import configparser

class ConfigManager:
    """配置管理类，处理配置文件的加载和保存"""
    
    def __init__(self, config_file='config.ini'):
        """初始化配置管理器
        
        Args:
            config_file: 配置文件路径，默认为config.ini
        """
        self.config_file = config_file
    
    def load_config(self):
        """从配置文件加载设置
        
        Returns:
            dict: 包含配置信息的字典
        """
        config = {
            'username': '',
            'password': '',
            'require_login': True,
            'auto_download': True,
            'timeout': 30
        }
        
        # 检查配置文件是否存在
        if os.path.exists(self.config_file):
            try:
                parser = configparser.ConfigParser()
                parser.read(self.config_file)
                
                # 加载登录信息
                if 'login' in parser:
                    if 'username' in parser['login']:
                        config['username'] = parser['login']['username']
                    if 'password' in parser['login']:
                        config['password'] = parser['login']['password']
                
                # 加载其他设置
                if 'settings' in parser:
                    if 'auto_download' in parser['settings']:
                        config['auto_download'] = parser['settings']['auto_download'].lower() == 'yes'
                    if 'timeout' in parser['settings']:
                        config['timeout'] = int(parser['settings']['timeout'])
                
                print("已从配置文件加载设置")
            except Exception as e:
                print(f"读取配置文件时出错: {str(e)}")
        else:
            # 创建示例配置文件
            self.create_default_config()
            print(f"已创建示例配置文件 '{self.config_file}',请编辑此文件并填入您的账号密码")
        
        # 如果用户名或密码为空，则标记不需要登录
        if not config['username'] or not config['password'] or config['username'] == 'your_username':
            config['require_login'] = False
        
        return config
    
    def create_default_config(self):
        """创建默认配置文件"""
        try:
            parser = configparser.ConfigParser()
            
            # 登录信息
            parser['login'] = {
                'username': 'your_username',
                'password': 'your_password'
            }
            
            # 其他设置
            parser['settings'] = {
                'auto_download': 'yes',
                'timeout': '30'
            }
            
            # 写入文件
            with open(self.config_file, 'w') as f:
                parser.write(f)
                
        except Exception as e:
            print(f"创建配置文件时出错: {str(e)}")
    
    def save_config(self, config):
        """保存配置到文件
        
        Args:
            config: 包含配置信息的字典
        """
        try:
            parser = configparser.ConfigParser()
            
            # 登录信息
            parser['login'] = {
                'username': config.get('username', ''),
                'password': config.get('password', '')
            }
            
            # 其他设置
            parser['settings'] = {
                'auto_download': 'yes' if config.get('auto_download', True) else 'no',
                'timeout': str(config.get('timeout', 30))
            }
            
            # 写入文件
            with open(self.config_file, 'w') as f:
                parser.write(f)
                
            print(f"配置已保存到 {self.config_file}")
        except Exception as e:
            print(f"保存配置文件时出错: {str(e)}") 